package cn.funeralobjects.dictms.service;

import cn.funeralobjects.common.service.*;
import cn.funeralobjects.dictms.entity.EDictValue;
import cn.funeralobjects.dictms.model.DictValue;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * @author FuneralObjects
 * Create date: 2020/6/3 12:39 AM
 */
public interface DictValueService extends
        CommonModifyService<DictValue, EDictValue, Integer>,
        EntityService<EDictValue, Integer>,
        CodeService<EDictValue, Integer>,
        EnableService<EDictValue, Integer>,
        DelSaltService<EDictValue, Integer>,
        CommitService<Integer>,
        IdService<Integer>,
        ModuleService {


    String ENTITY_NAME = "DictValue";

    /**
     * 判断是否有值
     *
     * @param value  字典值
     * @param dictId 字典类目
     * @return true - 存在
     */
    boolean existsByValueInDict(String value, Integer dictId);

    /**
     * 判断是否有值
     *
     * @param value     字典值
     * @param dictId    字典类目
     * @param withoutId 排除id
     * @return true - 存在
     */
    boolean existsByValueInDict(String value, Integer dictId, Integer withoutId);

    /**
     * 是否存在对象
     *
     * @param dictId 字典类目id
     * @param id     字典值id
     * @return true - 存在
     */
    boolean existsByIdInDict(Integer dictId, Integer id);

    /**
     * 查询字典值
     *
     * @param value  字典值
     * @param dictId 字典类目
     * @return 字典数据
     */
    Optional<EDictValue> findByValueInDict(String value, Integer dictId);

    Optional<EDictValue> findByIdInDict(Integer id, Integer dictId);


    Page<EDictValue> findPageByDictIdAndValueLike(Pageable pageable, Integer dictId, String valueLike);

    List<EDictValue> findAllByDictIdAndValueLike(Integer dictId, String valueLike);

    Integer getExistsDelSalt();
}
